package com.yunxin.core.application.command.product;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author zero°
 * @since 2023-05-30
 */
@Data
@Schema(description = "产品客户配置对象")
public class ProductCustomConfigOperateCommand implements Serializable {

    /**
     * 产品id
     */
    @Schema(description = "产品id")
    @NotNull(message = "产品id不能为空")
    private Long productId;
    /**
     * 客户最小年龄
     */
    @Schema(description = "客户最小年龄")
    private Integer customMinAge;
    /**
     * 客户最大年龄
     */
    @Schema(description = "客户最大年龄")
    private Integer customMaxAge;
    /**
     * 年龄开关 0.关闭 1.开启
     */
    @Schema(description = "年龄开关 0.关闭 1.开启")
    @NotNull(message = "年龄开关不能为空")
    private Integer ageSwitch;
    /**
     * 教育程度 0.无要求 1.高中 2.中专 3.大专 4.本科 5.硕士
     */
    @Schema(description = "教育程度 0.无要求 1.高中 2.中专 3.大专 4.本科 5.硕士")
    private List<Integer> educationLevelList;
    /**
     * 教育程度开关 0.关闭 1.开启
     */
    @Schema(description = "教育程度开关 0.关闭 1.开启")
    @NotNull(message = "教育程度开关不能为空")
    private Integer educationLeveSwitch;
    /**
     * 社保情况 0.无要求 1.连续缴纳6个月及以上 2.缴纳未满6个月 3.无社保
     */
    @Schema(description = "社保情况 0.无要求 1.连续缴纳6个月及以上 2.缴纳未满6个月 3.无社保")
    private List<Integer> socialSecurityLevelList;
    /**
     * 社保情况开关 0.关闭 1.开启
     */
    @Schema(description = "社保情况开关 0.关闭 1.开启")
    @NotNull(message = "社保情况开关不能为空")
    private Integer socialSecuritySwitch;
    /**
     * 公积金情况 0.无要求 1.连续缴纳6个月及以上 2.缴纳未满6个月 3.无公积金
     */
    @Schema(description = "公积金情况 0.无要求 1.连续缴纳6个月及以上 2.缴纳未满6个月 3.无公积金")
    private List<Integer> accumulationFundLevelList;
    /**
     * 公积金情况开关 0.关闭 1.开启
     */
    @Schema(description = "公积金情况开关 0.关闭 1.开启")
    @NotNull(message = "公积金情况开关不能为空")
    private Integer accumulationFundSwitch;
    /**
     * 芝麻分额度 0.无要求 1.额度550及以上 2.额度600及以上 3.额度650及以上 4.额度700及以上
     */
    @Schema(description = "芝麻分额度 0.无要求 1.额度550及以上 2.额度600及以上 3.额度650及以上 4.额度700及以上")
    private List<Integer> sesameSeedQuotaList;
    /**
     * 芝麻分额度开关 0.关闭 1.开启
     */
    @Schema(description = "芝麻分额度开关 0.关闭 1.开启")
    @NotNull(message = "芝麻分额度开关不能为空")
    private Integer sesameSeedQuotaSwitch;
    /**
     * 信用卡 0.无要求 1.有信用卡 2.无信用卡
     */
    @Schema(description = "信用卡 0.无要求 1.有信用卡 2.无信用卡")
    private List<Integer> creditCardList;
    /**
     * 信用卡开关 0.关闭 1.开启
     */
    @Schema(description = "信用卡开关 0.关闭 1.开启")
    @NotNull(message = "信用卡开关不能为空")
    private Integer creditCardSwitch;
    /**
     * 房产情况 0.无要求 1.有房可抵押 2.有房不抵押 3.无房产
     */
    @Schema(description = "房产情况 0.无要求 1.有房可抵押 2.有房不抵押 3.无房产")
    private List<Integer> houseLevelList;
    /**
     * 房产情况开关 0.关闭 1.开启
     */
    @Schema(description = "房产情况开关 0.关闭 1.开启")
    @NotNull(message = "房产情况开关不能为空")
    private Integer houseLevelSwitch;
    /**
     * 车产情况 0.无要求 1.有车可抵押 2.有车不抵押 3.无车产
     */
    @Schema(description = "车产情况 0.无要求 1.有车可抵押 2.有车不抵押 3.无车产")
    private List<Integer> vehicleLevelList;
    /**
     * 车产情况开关 0.关闭 1.开启
     */
    @Schema(description = "车产情况开关 0.关闭 1.开启")
    @NotNull(message = "车产情况开关不能为空")
    private Integer vehicleLevelSwitch;
    /**
     * 保险 0.无要求 1.缴纳满一年 2.缴纳未满一年 3.无保单
     */
    @Schema(description = "保险 0.无要求 1.缴纳满一年 2.缴纳未满一年 3.无保单")
    private List<Integer> insureList;
    /**
     * 保险开关 0.关闭 1.开启
     */
    @Schema(description = "保险开关 0.关闭 1.开启")
    @NotNull(message = "保险开关不能为空")
    private Integer insureSwitch;
    /**
     * 职业 0.无要求 1.民企员工 2.外企员工 3.企业主 4.个体户 5.公务员 6.事业单位员工 7.国企员工 8.自由职业 9.其他
     */
    @Schema(description = "职业 0.无要求 1.民企员工 2.外企员工 3.企业主 4.个体户 5.公务员 6.事业单位员工 7.国企员工 8.自由职业 9.其他")
    private List<Integer> occupationList;
    /**
     * 职业开关 0.关闭 1.开启
     */
    @Schema(description = "职业开关 0.关闭 1.开启")
    @NotNull(message = "职业开关不能为空")
    private Integer occupationSwitch;
    /**
     * 职业收入 0.无要求 1.月收入3500以下 2.月收入3500-6000 3.月收入6000-10000 4.月收入10000-20000 5.月收入20000以上
     */
    @Schema(description = "职业收入 0.无要求 1.月收入3500以下 2.月收入3500-6000 3.月收入6000-10000 4.月收入10000-20000 5.月收入20000以上")
    private List<Integer> occupationIncomeList;
    /**
     * 职业收入开关 0.关闭 1.开启
     */
    @Schema(description = "职业收入开关 0.关闭 1.开启")
    @NotNull(message = "职业收入开关不能为空")
    private Integer occupationIncomeSwitch;
    /**
     * 京东白条额度 0.无要求 1.额度1000以下 2.额度1000-5000 3.额度5000-10000 4.额度10000以上 5.无
     */
    @Schema(description = "京东白条额度 0.无要求 1.额度1000以下 2.额度1000-5000 3.额度5000-10000 4.额度10000以上 5.无")
    private List<Integer> jdBtQuotaList;

    /**
     * 京东白条额度开关 0.关闭 1.开启
     */
    @Schema(description = "京东白条额度开关 0.关闭 1.开启")
    private Integer jdBtQuotaSwitch;

    /**
     * 蚂蚁花呗额度 0.无要求 1.额度1000以下 2.额度1000-5000 3.额度5000-10000 4.额度10000以上 5.无
     */
    @Schema(description = "蚂蚁花呗额度 0.无要求 1.额度1000以下 2.额度1000-5000 3.额度5000-10000 4.额度10000以上 5.无")
    private List<Integer> antCreditPayQuotaList;

    /**
     * 蚂蚁花呗额度开关 0.关闭 1.开启
     */
    @Schema(description = "蚂蚁花呗额度开关 0.关闭 1.开启")
    private Integer antCreditPayQuotaSwitch;

    /**
     * 微粒贷额度 0.无要求 1.额度5000以下 2.额度5000-10000 3.额度10000-20000 4.额度20000以上 5.无
     */
    @Schema(description = "微粒贷额度 0.无要求 1.额度5000以下 2.额度5000-10000 3.额度10000-20000 4.额度20000以上 5.无")
    private List<Integer> microLoanQuotaList;

    /**
     * 微粒贷额度开关 0.关闭 1.开启
     */
    @Schema(description = "微粒贷额度开关 0.关闭 1.开启")
    private Integer microLoanQuotaSwitch;

    /**
     * 性别 0.无要求 1.男 2.女
     */
    @Schema(description = "性别 0.无要求 1.男 2.女")
    private List<Integer> sexList;

    /**
     * 性别开关 0.关闭 1.开启
     */
    @Schema(description = "性别开关 0.关闭 1.开启")
    private Integer sexSwitch;
    /**
     * 逾期 0.无要求 1.否 2.是
     */
    @Schema(description = "逾期 0.无要求 1.否 2.是")
    private List<Integer> beOverdueList;

    /**
     * 逾期开关 0.关闭 1.开启
     */
    @Schema(description = "逾期开关 0.关闭 1.开启")
    private Integer beOverdueSwitch;

    /**
     * 城市配置
     */
    @Schema(description = "城市配置")
    private String cityConfig;
    /**
     * 操作人
     */
    @Schema(hidden = true)
    private String operator;


}
